home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / include / fcntl.h < prev    next >
C/C++ Source or Header  |  1990-07-23  |  3KB  |  69 lines

  1. /* The <fcntl.h> header is needed by the open() and fcntl() system calls,
  2.  * which  have a variety of parameters and flags.  They are described here.  
  3.  * The formats of the calls to each of these are:
  4.  *
  5.  *    open(path, oflag [,mode])    open a file
  6.  *    fcntl(fd, cmd [,arg])        get or set file attributes
  7.  * 
  8.  */
  9.  
  10. #ifndef _FCNTL_H
  11. #define _FCNTL_H
  12.  
  13. /* These values are used for cmd in fcntl().  POSIX Table 6-1.  */
  14. #define F_DUPFD            0    /* duplicate file descriptor */
  15. #define F_GETFD               1    /* get file descriptor flags */
  16. #define F_SETFD            2    /* set file descriptor flags */
  17. #define F_GETFL            3    /* get file status flags */
  18. #define F_SETFL            4    /* set file status flags */
  19. #define F_GETLK            5    /* get record locking information */
  20. #define F_SETLK            6    /* set record locking information */
  21. #define F_SETLKW           7    /* set record locking info; wait if blocked */
  22.  
  23. /* File descriptor flags used for fcntl().  POSIX Table 6-2. */
  24. #define FD_CLOEXEC         1    /* close on exec flag for third arg of fcntl */
  25.  
  26. /* L_type values for record locking with fcntl().  POSIX Table 6-3. */
  27. #define F_RDLCK            0    /* shared or read lock */
  28. #define F_WRLCK            1    /* exclusive or write lock */
  29. #define F_UNLCK            2    /* unlock */
  30.  
  31. /* Oflag values for open().  POSIX Table 6-4. */
  32. #define O_CREAT        00100    /* creat file if it doesn't exist */
  33. #define O_EXCL         00200    /* exclusive use flag */
  34. #define O_NOCTTY       00400    /* do not assign a controlling terminal */
  35. #define O_TRUNC        01000    /* truncate flag */
  36.  
  37. /* File status flags for open() and fcntl().  POSIX Table 6-5. */
  38. #define O_APPEND       02000    /* set append mode */
  39. #define O_NONBLOCK     04000    /* no delay */
  40.  
  41. /* File access modes for open() and fcntl().  POSIX Table 6-6. */
  42. #define O_RDONLY           0    /* open(name, O_RDONLY) opens read only */
  43. #define O_WRONLY           1    /* open(name, O_WRONLY) opens write only */
  44. #define O_RDWR             2    /* open(name, O_RDWR) opens read/write */
  45.  
  46. /* Mask for use with file access modes.  POSIX Table 6-7. */
  47. #define O_ACCMODE         03    /* mask for file access modes */
  48.  
  49. /* Struct used for locking.  POSIX Table 6-8. */
  50. struct flock {
  51.   short l_type;            /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
  52.   short l_whence;        /* flag for starting offset */
  53.   off_t l_start;        /* relative offset in bytes */
  54.   off_t l_len;            /* size; if 0, then until EOF */
  55.   pid_t l_pid;            /* process id of the locks' owner */
  56. };
  57.  
  58.  
  59. /* Function Prototypes. */
  60. #ifndef _ANSI_H
  61. #include <ansi.h>
  62. #endif
  63.  
  64. _PROTOTYPE( int creat, (const char *_path, /* mode_t */ unsigned _mode)    );
  65. _PROTOTYPE( int fcntl, (int _filedes, int _cmd, ...)              );
  66. _PROTOTYPE( int open,  (const char *_path, int _oflag, ...)         );
  67.  
  68. #endif /* _FCNTL_H */
  69.